{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "import keras\n",
    "from keras import layers\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = keras.datasets.imdb"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "max_word = 10000"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "(x_train, y_train), (x_test, y_test) = data.load_data(num_words=max_word)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((25000,), (25000,))"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train.shape, y_train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "218"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 0, 0, ..., 0, 1, 0], dtype=int64)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "word_index = data.get_word_index()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "index_word = dict((value, key) for key,value in word_index.items())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['?',\n",
       " 'this',\n",
       " 'film',\n",
       " 'was',\n",
       " 'just',\n",
       " 'brilliant',\n",
       " 'casting',\n",
       " 'location',\n",
       " 'scenery',\n",
       " 'story',\n",
       " 'direction',\n",
       " \"everyone's\",\n",
       " 'really',\n",
       " 'suited',\n",
       " 'the',\n",
       " 'part',\n",
       " 'they',\n",
       " 'played',\n",
       " 'and',\n",
       " 'you',\n",
       " 'could',\n",
       " 'just',\n",
       " 'imagine',\n",
       " 'being',\n",
       " 'there',\n",
       " 'robert',\n",
       " '?',\n",
       " 'is',\n",
       " 'an',\n",
       " 'amazing',\n",
       " 'actor',\n",
       " 'and',\n",
       " 'now',\n",
       " 'the',\n",
       " 'same',\n",
       " 'being',\n",
       " 'director',\n",
       " '?',\n",
       " 'father',\n",
       " 'came',\n",
       " 'from',\n",
       " 'the',\n",
       " 'same',\n",
       " 'scottish',\n",
       " 'island',\n",
       " 'as',\n",
       " 'myself',\n",
       " 'so',\n",
       " 'i',\n",
       " 'loved',\n",
       " 'the',\n",
       " 'fact',\n",
       " 'there',\n",
       " 'was',\n",
       " 'a',\n",
       " 'real',\n",
       " 'connection',\n",
       " 'with',\n",
       " 'this',\n",
       " 'film',\n",
       " 'the',\n",
       " 'witty',\n",
       " 'remarks',\n",
       " 'throughout',\n",
       " 'the',\n",
       " 'film',\n",
       " 'were',\n",
       " 'great',\n",
       " 'it',\n",
       " 'was',\n",
       " 'just',\n",
       " 'brilliant',\n",
       " 'so',\n",
       " 'much',\n",
       " 'that',\n",
       " 'i',\n",
       " 'bought',\n",
       " 'the',\n",
       " 'film',\n",
       " 'as',\n",
       " 'soon',\n",
       " 'as',\n",
       " 'it',\n",
       " 'was',\n",
       " 'released',\n",
       " 'for',\n",
       " '?',\n",
       " 'and',\n",
       " 'would',\n",
       " 'recommend',\n",
       " 'it',\n",
       " 'to',\n",
       " 'everyone',\n",
       " 'to',\n",
       " 'watch',\n",
       " 'and',\n",
       " 'the',\n",
       " 'fly',\n",
       " 'fishing',\n",
       " 'was',\n",
       " 'amazing',\n",
       " 'really',\n",
       " 'cried',\n",
       " 'at',\n",
       " 'the',\n",
       " 'end',\n",
       " 'it',\n",
       " 'was',\n",
       " 'so',\n",
       " 'sad',\n",
       " 'and',\n",
       " 'you',\n",
       " 'know',\n",
       " 'what',\n",
       " 'they',\n",
       " 'say',\n",
       " 'if',\n",
       " 'you',\n",
       " 'cry',\n",
       " 'at',\n",
       " 'a',\n",
       " 'film',\n",
       " 'it',\n",
       " 'must',\n",
       " 'have',\n",
       " 'been',\n",
       " 'good',\n",
       " 'and',\n",
       " 'this',\n",
       " 'definitely',\n",
       " 'was',\n",
       " 'also',\n",
       " '?',\n",
       " 'to',\n",
       " 'the',\n",
       " 'two',\n",
       " 'little',\n",
       " \"boy's\",\n",
       " 'that',\n",
       " 'played',\n",
       " 'the',\n",
       " '?',\n",
       " 'of',\n",
       " 'norman',\n",
       " 'and',\n",
       " 'paul',\n",
       " 'they',\n",
       " 'were',\n",
       " 'just',\n",
       " 'brilliant',\n",
       " 'children',\n",
       " 'are',\n",
       " 'often',\n",
       " 'left',\n",
       " 'out',\n",
       " 'of',\n",
       " 'the',\n",
       " '?',\n",
       " 'list',\n",
       " 'i',\n",
       " 'think',\n",
       " 'because',\n",
       " 'the',\n",
       " 'stars',\n",
       " 'that',\n",
       " 'play',\n",
       " 'them',\n",
       " 'all',\n",
       " 'grown',\n",
       " 'up',\n",
       " 'are',\n",
       " 'such',\n",
       " 'a',\n",
       " 'big',\n",
       " 'profile',\n",
       " 'for',\n",
       " 'the',\n",
       " 'whole',\n",
       " 'film',\n",
       " 'but',\n",
       " 'these',\n",
       " 'children',\n",
       " 'are',\n",
       " 'amazing',\n",
       " 'and',\n",
       " 'should',\n",
       " 'be',\n",
       " 'praised',\n",
       " 'for',\n",
       " 'what',\n",
       " 'they',\n",
       " 'have',\n",
       " 'done',\n",
       " \"don't\",\n",
       " 'you',\n",
       " 'think',\n",
       " 'the',\n",
       " 'whole',\n",
       " 'story',\n",
       " 'was',\n",
       " 'so',\n",
       " 'lovely',\n",
       " 'because',\n",
       " 'it',\n",
       " 'was',\n",
       " 'true',\n",
       " 'and',\n",
       " 'was',\n",
       " \"someone's\",\n",
       " 'life',\n",
       " 'after',\n",
       " 'all',\n",
       " 'that',\n",
       " 'was',\n",
       " 'shared',\n",
       " 'with',\n",
       " 'us',\n",
       " 'all']"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[index_word.get(index-3, '?') for index in x_train[0]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[218,\n",
       " 189,\n",
       " 141,\n",
       " 550,\n",
       " 147,\n",
       " 43,\n",
       " 123,\n",
       " 562,\n",
       " 233,\n",
       " 130,\n",
       " 450,\n",
       " 99,\n",
       " 117,\n",
       " 238,\n",
       " 109,\n",
       " 129,\n",
       " 163,\n",
       " 752,\n",
       " 212,\n",
       " 177,\n",
       " 129,\n",
       " 140,\n",
       " 256,\n",
       " 888,\n",
       " 93,\n",
       " 142,\n",
       " 220,\n",
       " 193,\n",
       " 171,\n",
       " 221,\n",
       " 174,\n",
       " 647,\n",
       " 233,\n",
       " 162,\n",
       " 597,\n",
       " 234,\n",
       " 51,\n",
       " 336,\n",
       " 139,\n",
       " 231,\n",
       " 704,\n",
       " 142,\n",
       " 861,\n",
       " 132,\n",
       " 122,\n",
       " 570,\n",
       " 55,\n",
       " 214,\n",
       " 103,\n",
       " 186,\n",
       " 113,\n",
       " 169,\n",
       " 469,\n",
       " 138,\n",
       " 302,\n",
       " 766,\n",
       " 351,\n",
       " 146,\n",
       " 59,\n",
       " 206,\n",
       " 107,\n",
       " 152,\n",
       " 186,\n",
       " 431,\n",
       " 147,\n",
       " 684,\n",
       " 383,\n",
       " 324,\n",
       " 252,\n",
       " 263,\n",
       " 787,\n",
       " 211,\n",
       " 314,\n",
       " 118,\n",
       " 390,\n",
       " 132,\n",
       " 710,\n",
       " 306,\n",
       " 167,\n",
       " 115,\n",
       " 95,\n",
       " 158,\n",
       " 156,\n",
       " 82,\n",
       " 502,\n",
       " 314,\n",
       " 190,\n",
       " 174,\n",
       " 60,\n",
       " 145,\n",
       " 214,\n",
       " 659,\n",
       " 408,\n",
       " 515,\n",
       " 461,\n",
       " 202,\n",
       " 238,\n",
       " 170,\n",
       " 107,\n",
       " 171,\n",
       " 158,\n",
       " 145,\n",
       " 790,\n",
       " 258,\n",
       " 287,\n",
       " 67,\n",
       " 123,\n",
       " 975,\n",
       " 775,\n",
       " 236,\n",
       " 195,\n",
       " 274,\n",
       " 214,\n",
       " 91,\n",
       " 1038,\n",
       " 815,\n",
       " 183,\n",
       " 206,\n",
       " 50,\n",
       " 118,\n",
       " 147,\n",
       " 141,\n",
       " 60,\n",
       " 56,\n",
       " 439,\n",
       " 439,\n",
       " 213,\n",
       " 144,\n",
       " 533,\n",
       " 303,\n",
       " 203,\n",
       " 563,\n",
       " 129,\n",
       " 153,\n",
       " 55,\n",
       " 92,\n",
       " 174,\n",
       " 187,\n",
       " 183,\n",
       " 165,\n",
       " 78,\n",
       " 198,\n",
       " 156,\n",
       " 223,\n",
       " 127,\n",
       " 61,\n",
       " 362,\n",
       " 84,\n",
       " 57,\n",
       " 176,\n",
       " 159,\n",
       " 57,\n",
       " 159,\n",
       " 165,\n",
       " 213,\n",
       " 194,\n",
       " 149,\n",
       " 130,\n",
       " 203,\n",
       " 19,\n",
       " 98,\n",
       " 466,\n",
       " 525,\n",
       " 130,\n",
       " 322,\n",
       " 153,\n",
       " 408,\n",
       " 215,\n",
       " 472,\n",
       " 143,\n",
       " 136,\n",
       " 354,\n",
       " 260,\n",
       " 319,\n",
       " 125,\n",
       " 209,\n",
       " 282,\n",
       " 810,\n",
       " 142,\n",
       " 240,\n",
       " 148,\n",
       " 198,\n",
       " 193,\n",
       " 123,\n",
       " 128,\n",
       " 103,\n",
       " 479,\n",
       " 345,\n",
       " 263,\n",
       " 165,\n",
       " 205,\n",
       " 333,\n",
       " 184,\n",
       " 92,\n",
       " 177,\n",
       " 335,\n",
       " 120,\n",
       " 121,\n",
       " 259,\n",
       " 180,\n",
       " 160,\n",
       " 114,\n",
       " 59,\n",
       " 343,\n",
       " 513,\n",
       " 133,\n",
       " 206,\n",
       " 152,\n",
       " 206,\n",
       " 572,\n",
       " 153,\n",
       " 139,\n",
       " 151,\n",
       " 129,\n",
       " 129,\n",
       " 196,\n",
       " 433,\n",
       " 199,\n",
       " 140,\n",
       " 311,\n",
       " 151,\n",
       " 200,\n",
       " 584,\n",
       " 127,\n",
       " 513,\n",
       " 781,\n",
       " 932,\n",
       " 526,\n",
       " 161,\n",
       " 646,\n",
       " 135,\n",
       " 52,\n",
       " 267,\n",
       " 174,\n",
       " 185,\n",
       " 219,\n",
       " 81,\n",
       " 219,\n",
       " 131,\n",
       " 153,\n",
       " 270,\n",
       " 644,\n",
       " 155,\n",
       " 546,\n",
       " 284,\n",
       " 85,\n",
       " 293,\n",
       " 155,\n",
       " 358,\n",
       " 45,\n",
       " 231,\n",
       " 124,\n",
       " 178,\n",
       " 118,\n",
       " 260,\n",
       " 393,\n",
       " 127,\n",
       " 157,\n",
       " 107,\n",
       " 322,\n",
       " 188,\n",
       " 126,\n",
       " 155,\n",
       " 294,\n",
       " 249,\n",
       " 177,\n",
       " 138,\n",
       " 215,\n",
       " 263,\n",
       " 132,\n",
       " 150,\n",
       " 217,\n",
       " 188,\n",
       " 385,\n",
       " 199,\n",
       " 127,\n",
       " 325,\n",
       " 161,\n",
       " 140,\n",
       " 215,\n",
       " 240,\n",
       " 230,\n",
       " 327,\n",
       " 129,\n",
       " 113,\n",
       " 225,\n",
       " 87,\n",
       " 496,\n",
       " 234,\n",
       " 311,\n",
       " 215,\n",
       " 111,\n",
       " 102,\n",
       " 110,\n",
       " 165,\n",
       " 839,\n",
       " 296,\n",
       " 130,\n",
       " 104,\n",
       " 274,\n",
       " 229,\n",
       " 235,\n",
       " 653,\n",
       " 468,\n",
       " 578,\n",
       " 139,\n",
       " 315,\n",
       " 65,\n",
       " 178,\n",
       " 836,\n",
       " 164,\n",
       " 239,\n",
       " 212,\n",
       " 297,\n",
       " 258,\n",
       " 157,\n",
       " 78,\n",
       " 544,\n",
       " 152,\n",
       " 120,\n",
       " 208,\n",
       " 163,\n",
       " 226,\n",
       " 304,\n",
       " 195,\n",
       " 454,\n",
       " 121,\n",
       " 175,\n",
       " 617,\n",
       " 320,\n",
       " 121,\n",
       " 245,\n",
       " 655,\n",
       " 114,\n",
       " 131,\n",
       " 104,\n",
       " 238,\n",
       " 138,\n",
       " 164,\n",
       " 52,\n",
       " 215,\n",
       " 87,\n",
       " 471,\n",
       " 142,\n",
       " 289,\n",
       " 106,\n",
       " 141,\n",
       " 239,\n",
       " 412,\n",
       " 154,\n",
       " 175,\n",
       " 828,\n",
       " 41,\n",
       " 144,\n",
       " 525,\n",
       " 176,\n",
       " 551,\n",
       " 251,\n",
       " 621,\n",
       " 159,\n",
       " 75,\n",
       " 207,\n",
       " 80,\n",
       " 94,\n",
       " 78,\n",
       " 449,\n",
       " 622,\n",
       " 157,\n",
       " 85,\n",
       " 260,\n",
       " 1011,\n",
       " 444,\n",
       " 326,\n",
       " 586,\n",
       " 118,\n",
       " 270,\n",
       " 360,\n",
       " 95,\n",
       " 640,\n",
       " 315,\n",
       " 138,\n",
       " 573,\n",
       " 434,\n",
       " 313,\n",
       " 128,\n",
       " 1007,\n",
       " 130,\n",
       " 257,\n",
       " 209,\n",
       " 159,\n",
       " 602,\n",
       " 109,\n",
       " 250,\n",
       " 117,\n",
       " 149,\n",
       " 199,\n",
       " 55,\n",
       " 578,\n",
       " 158,\n",
       " 323,\n",
       " 486,\n",
       " 177,\n",
       " 73,\n",
       " 127,\n",
       " 138,\n",
       " 130,\n",
       " 110,\n",
       " 283,\n",
       " 244,\n",
       " 375,\n",
       " 137,\n",
       " 156,\n",
       " 153,\n",
       " 112,\n",
       " 94,\n",
       " 137,\n",
       " 195,\n",
       " 137,\n",
       " 112,\n",
       " 25,\n",
       " 106,\n",
       " 105,\n",
       " 272,\n",
       " 857,\n",
       " 116,\n",
       " 58,\n",
       " 114,\n",
       " 71,\n",
       " 57,\n",
       " 292,\n",
       " 56,\n",
       " 157,\n",
       " 283,\n",
       " 87,\n",
       " 327,\n",
       " 481,\n",
       " 918,\n",
       " 129,\n",
       " 181,\n",
       " 214,\n",
       " 601,\n",
       " 215,\n",
       " 117,\n",
       " 112,\n",
       " 401,\n",
       " 165,\n",
       " 154,\n",
       " 587,\n",
       " 417,\n",
       " 345,\n",
       " 233,\n",
       " 496,\n",
       " 403,\n",
       " 317,\n",
       " 189,\n",
       " 340,\n",
       " 195,\n",
       " 370,\n",
       " 194,\n",
       " 150,\n",
       " 559,\n",
       " 48,\n",
       " 129,\n",
       " 110,\n",
       " 45,\n",
       " 173,\n",
       " 674,\n",
       " 416,\n",
       " 233,\n",
       " 146,\n",
       " 73,\n",
       " 146,\n",
       " 190,\n",
       " 130,\n",
       " 127,\n",
       " 217,\n",
       " 785,\n",
       " 227,\n",
       " 119,\n",
       " 149,\n",
       " 150,\n",
       " 175,\n",
       " 588,\n",
       " 130,\n",
       " 414,\n",
       " 172,\n",
       " 523,\n",
       " 119,\n",
       " 130,\n",
       " 122,\n",
       " 219,\n",
       " 264,\n",
       " 202,\n",
       " 218,\n",
       " 367,\n",
       " 230,\n",
       " 429,\n",
       " 985,\n",
       " 144,\n",
       " 128,\n",
       " 60,\n",
       " 78,\n",
       " 125,\n",
       " 131,\n",
       " 186,\n",
       " 283,\n",
       " 121,\n",
       " 226,\n",
       " 82,\n",
       " 57,\n",
       " 468,\n",
       " 336,\n",
       " 218,\n",
       " 110,\n",
       " 535,\n",
       " 603,\n",
       " 147,\n",
       " 117,\n",
       " 156,\n",
       " 72,\n",
       " 72,\n",
       " 69,\n",
       " 529,\n",
       " 148,\n",
       " 56,\n",
       " 263,\n",
       " 202,\n",
       " 348,\n",
       " 172,\n",
       " 104,\n",
       " 212,\n",
       " 146,\n",
       " 191,\n",
       " 251,\n",
       " 179,\n",
       " 722,\n",
       " 156,\n",
       " 141,\n",
       " 235,\n",
       " 97,\n",
       " 69,\n",
       " 222,\n",
       " 228,\n",
       " 233,\n",
       " 46,\n",
       " 130,\n",
       " 599,\n",
       " 146,\n",
       " 71,\n",
       " 144,\n",
       " 132,\n",
       " 89,\n",
       " 115,\n",
       " 267,\n",
       " 100,\n",
       " 148,\n",
       " 197,\n",
       " 627,\n",
       " 161,\n",
       " 263,\n",
       " 447,\n",
       " 97,\n",
       " 132,\n",
       " 357,\n",
       " 52,\n",
       " 329,\n",
       " 149,\n",
       " 253,\n",
       " 330,\n",
       " 549,\n",
       " 166,\n",
       " 190,\n",
       " 165,\n",
       " 202,\n",
       " 351,\n",
       " 633,\n",
       " 942,\n",
       " 123,\n",
       " 121,\n",
       " 184,\n",
       " 270,\n",
       " 139,\n",
       " 248,\n",
       " 382,\n",
       " 292,\n",
       " 215,\n",
       " 439,\n",
       " 177,\n",
       " 42,\n",
       " 173,\n",
       " 173,\n",
       " 233,\n",
       " 480,\n",
       " 377,\n",
       " 48,\n",
       " 177,\n",
       " 192,\n",
       " 84,\n",
       " 176,\n",
       " 150,\n",
       " 467,\n",
       " 210,\n",
       " 687,\n",
       " 631,\n",
       " 279,\n",
       " 136,\n",
       " 67,\n",
       " 167,\n",
       " 170,\n",
       " 359,\n",
       " 451,\n",
       " 135,\n",
       " 197,\n",
       " 1009,\n",
       " 87,\n",
       " 241,\n",
       " 492,\n",
       " 336,\n",
       " 88,\n",
       " 170,\n",
       " 425,\n",
       " 459,\n",
       " 331,\n",
       " 199,\n",
       " 158,\n",
       " 69,\n",
       " 121,\n",
       " 116,\n",
       " 120,\n",
       " 297,\n",
       " 173,\n",
       " 293,\n",
       " 103,\n",
       " 477,\n",
       " 723,\n",
       " 133,\n",
       " 413,\n",
       " 109,\n",
       " 101,\n",
       " 227,\n",
       " 141,\n",
       " 939,\n",
       " 199,\n",
       " 162,\n",
       " 377,\n",
       " 172,\n",
       " 532,\n",
       " 68,\n",
       " 41,\n",
       " 130,\n",
       " 83,\n",
       " 136,\n",
       " 787,\n",
       " 117,\n",
       " 165,\n",
       " 111,\n",
       " 124,\n",
       " 552,\n",
       " 172,\n",
       " 130,\n",
       " 96,\n",
       " 153,\n",
       " 181,\n",
       " 49,\n",
       " 119,\n",
       " 88,\n",
       " 100,\n",
       " 297,\n",
       " 363,\n",
       " 632,\n",
       " 218,\n",
       " 168,\n",
       " 100,\n",
       " 212,\n",
       " 120,\n",
       " 84,\n",
       " 135,\n",
       " 268,\n",
       " 127,\n",
       " 746,\n",
       " 127,\n",
       " 236,\n",
       " 335,\n",
       " 193,\n",
       " 843,\n",
       " 251,\n",
       " 165,\n",
       " 210,\n",
       " 239,\n",
       " 311,\n",
       " 214,\n",
       " 29,\n",
       " 334,\n",
       " 168,\n",
       " 127,\n",
       " 169,\n",
       " 110,\n",
       " 164,\n",
       " 147,\n",
       " 205,\n",
       " 133,\n",
       " 188,\n",
       " 125,\n",
       " 183,\n",
       " 326,\n",
       " 150,\n",
       " 290,\n",
       " 214,\n",
       " 328,\n",
       " 51,\n",
       " 343,\n",
       " 212,\n",
       " 454,\n",
       " 96,\n",
       " 471,\n",
       " 82,\n",
       " 523,\n",
       " 114,\n",
       " 147,\n",
       " 200,\n",
       " 387,\n",
       " 174,\n",
       " 150,\n",
       " 103,\n",
       " 187,\n",
       " 183,\n",
       " 115,\n",
       " 144,\n",
       " 131,\n",
       " 241,\n",
       " 57,\n",
       " 46,\n",
       " 23,\n",
       " 419,\n",
       " 227,\n",
       " 110,\n",
       " 91,\n",
       " 66,\n",
       " 137,\n",
       " 104,\n",
       " 164,\n",
       " 417,\n",
       " 127,\n",
       " 78,\n",
       " 181,\n",
       " 179,\n",
       " 181,\n",
       " 261,\n",
       " 243,\n",
       " 205,\n",
       " 155,\n",
       " 166,\n",
       " 180,\n",
       " 77,\n",
       " 440,\n",
       " 284,\n",
       " 328,\n",
       " 258,\n",
       " 61,\n",
       " 193,\n",
       " 39,\n",
       " 156,\n",
       " 124,\n",
       " 108,\n",
       " 322,\n",
       " 376,\n",
       " 162,\n",
       " 359,\n",
       " 139,\n",
       " 302,\n",
       " 646,\n",
       " 44,\n",
       " 253,\n",
       " 244,\n",
       " 438,\n",
       " 432,\n",
       " 226,\n",
       " 236,\n",
       " 336,\n",
       " 166,\n",
       " 444,\n",
       " 195,\n",
       " 74,\n",
       " 127,\n",
       " 213,\n",
       " 195,\n",
       " 148,\n",
       " 174,\n",
       " 148,\n",
       " 149,\n",
       " 136,\n",
       " 77,\n",
       " 53,\n",
       " 151,\n",
       " 215,\n",
       " 129,\n",
       " 196,\n",
       " 135,\n",
       " 146,\n",
       " 235,\n",
       " 166,\n",
       " 359,\n",
       " 132,\n",
       " 167,\n",
       " 141,\n",
       " 188,\n",
       " 365,\n",
       " 138,\n",
       " 118,\n",
       " 110,\n",
       " 309,\n",
       " 261,\n",
       " 127,\n",
       " 76,\n",
       " 900,\n",
       " 211,\n",
       " 273,\n",
       " 233,\n",
       " 149,\n",
       " 212,\n",
       " 302,\n",
       " 268,\n",
       " 295,\n",
       " 212,\n",
       " 143,\n",
       " 467,\n",
       " 256,\n",
       " 230,\n",
       " 129,\n",
       " 145,\n",
       " 119,\n",
       " 83,\n",
       " 322,\n",
       " 208,\n",
       " 132,\n",
       " 149,\n",
       " 278,\n",
       " 136,\n",
       " 198,\n",
       " 164,\n",
       " 349,\n",
       " 200,\n",
       " 278,\n",
       " 439,\n",
       " 130,\n",
       " 161,\n",
       " 223,\n",
       " 561,\n",
       " 397,\n",
       " 302,\n",
       " 282,\n",
       " 187,\n",
       " 192,\n",
       " 107,\n",
       " 361,\n",
       " 126,\n",
       " 201,\n",
       " 79,\n",
       " 415,\n",
       " 133,\n",
       " 300,\n",
       " 124,\n",
       " 355,\n",
       " 978,\n",
       " 323,\n",
       " 114,\n",
       " 85,\n",
       " 143,\n",
       " 221,\n",
       " 190,\n",
       " 215,\n",
       " 244,\n",
       " 626,\n",
       " 64,\n",
       " 127,\n",
       " 180,\n",
       " 128,\n",
       " 206,\n",
       " 221,\n",
       " 261,\n",
       " 122,\n",
       " 201,\n",
       " 221,\n",
       " 139,\n",
       " 315,\n",
       " 356,\n",
       " 254,\n",
       " 131,\n",
       " 128,\n",
       " 234,\n",
       " 129,\n",
       " 66,\n",
       " 134,\n",
       " 121,\n",
       " 470,\n",
       " 373,\n",
       " 129,\n",
       " 127,\n",
       " 92,\n",
       " 127,\n",
       " 223,\n",
       " 179,\n",
       " 651,\n",
       " 452,\n",
       " 935,\n",
       " 146,\n",
       " 170,\n",
       " 438,\n",
       " 94,\n",
       " 159,\n",
       " 312,\n",
       " 302,\n",
       " 128,\n",
       " 121,\n",
       " 280,\n",
       " 622,\n",
       " 166,\n",
       " 126,\n",
       " 157,\n",
       " 353,\n",
       " 45,\n",
       " 132,\n",
       " 324,\n",
       " 65,\n",
       " 304,\n",
       " 149,\n",
       " 243,\n",
       " 117,\n",
       " 719,\n",
       " 164,\n",
       " 116,\n",
       " 61,\n",
       " 368,\n",
       " 407,\n",
       " 73,\n",
       " 571,\n",
       " 170,\n",
       " 303,\n",
       " 159,\n",
       " 42,\n",
       " 400,\n",
       " 295,\n",
       " 183,\n",
       " 75,\n",
       " 215,\n",
       " 255,\n",
       " 229,\n",
       " 445,\n",
       " 1000,\n",
       " 494,\n",
       " 128,\n",
       " 580,\n",
       " 130,\n",
       " 59,\n",
       " 189,\n",
       " 526,\n",
       " 116,\n",
       " 114,\n",
       " 544,\n",
       " 118,\n",
       " 111,\n",
       " 420,\n",
       " 250,\n",
       " 258,\n",
       " 188,\n",
       " 139,\n",
       " 89,\n",
       " 135,\n",
       " 58,\n",
       " 173,\n",
       " 84,\n",
       " 150,\n",
       " 170,\n",
       " 159,\n",
       " 152,\n",
       " 170,\n",
       " 74,\n",
       " 213,\n",
       " 41,\n",
       " 250,\n",
       " 124,\n",
       " 533,\n",
       " 84,\n",
       " 186,\n",
       " 126,\n",
       " 183,\n",
       " 125,\n",
       " 153,\n",
       " 282,\n",
       " 146,\n",
       " 149,\n",
       " 215,\n",
       " 122,\n",
       " 68,\n",
       " 139,\n",
       " 128,\n",
       " 113,\n",
       " 252,\n",
       " 168,\n",
       " 434,\n",
       " ...]"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[len(seq) for seq in x_train]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "9999"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "max([max(seq) for seq in x_train])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "文本的向量化"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "one-hot"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "k-hot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "def k_hot(seqs, dim=10000):\n",
    "    result = np.zeros((len(seqs), dim))\n",
    "    for i, seq in enumerate(seqs):\n",
    "        result[i, seq] = 1\n",
    "    return result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_train = k_hot(x_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(25000, 10000)"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(10000,)"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train[0].shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_test = k_hot(x_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 0, 0, ..., 0, 1, 0], dtype=int64)"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = keras.Sequential()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.add(layers.Dense(32, input_dim=10000, activation='relu'))\n",
    "model.add(layers.Dense(32, activation='relu'))\n",
    "model.add(layers.Dense(1, activation='sigmoid'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "dense_17 (Dense)             (None, 32)                320032    \n",
      "_________________________________________________________________\n",
      "dense_18 (Dense)             (None, 32)                1056      \n",
      "_________________________________________________________________\n",
      "dense_19 (Dense)             (None, 1)                 33        \n",
      "=================================================================\n",
      "Total params: 321,121\n",
      "Trainable params: 321,121\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.compile(optimizer='adam',\n",
    "              loss='binary_crossentropy',\n",
    "              metrics=['acc']\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 25000 samples, validate on 25000 samples\n",
      "Epoch 1/15\n",
      "25000/25000 [==============================] - 5s 199us/step - loss: 0.3720 - acc: 0.8442 - val_loss: 0.2856 - val_acc: 0.8860\n",
      "Epoch 2/15\n",
      "25000/25000 [==============================] - 4s 161us/step - loss: 0.1938 - acc: 0.9287 - val_loss: 0.3299 - val_acc: 0.8728\n",
      "Epoch 3/15\n",
      "25000/25000 [==============================] - 4s 144us/step - loss: 0.1435 - acc: 0.9476 - val_loss: 0.3486 - val_acc: 0.8728\n",
      "Epoch 4/15\n",
      "25000/25000 [==============================] - 4s 143us/step - loss: 0.1088 - acc: 0.9616 - val_loss: 0.4145 - val_acc: 0.8644\n",
      "Epoch 5/15\n",
      "25000/25000 [==============================] - 4s 143us/step - loss: 0.0798 - acc: 0.9740 - val_loss: 0.4903 - val_acc: 0.8577\n",
      "Epoch 6/15\n",
      "25000/25000 [==============================] - 4s 144us/step - loss: 0.0587 - acc: 0.9813 - val_loss: 0.5285 - val_acc: 0.8588\n",
      "Epoch 7/15\n",
      "25000/25000 [==============================] - 4s 144us/step - loss: 0.0372 - acc: 0.9893 - val_loss: 0.5979 - val_acc: 0.8564\n",
      "Epoch 8/15\n",
      "25000/25000 [==============================] - 4s 144us/step - loss: 0.0209 - acc: 0.9958 - val_loss: 0.6660 - val_acc: 0.8564\n",
      "Epoch 9/15\n",
      "25000/25000 [==============================] - 4s 145us/step - loss: 0.0103 - acc: 0.9986 - val_loss: 0.7313 - val_acc: 0.8564\n",
      "Epoch 10/15\n",
      "25000/25000 [==============================] - 4s 143us/step - loss: 0.0049 - acc: 0.9995 - val_loss: 0.7866 - val_acc: 0.8550\n",
      "Epoch 11/15\n",
      "25000/25000 [==============================] - 4s 145us/step - loss: 0.0026 - acc: 0.9998 - val_loss: 0.8333 - val_acc: 0.8553\n",
      "Epoch 12/15\n",
      "25000/25000 [==============================] - 4s 146us/step - loss: 0.0015 - acc: 0.9999 - val_loss: 0.8684 - val_acc: 0.8558\n",
      "Epoch 13/15\n",
      "25000/25000 [==============================] - 4s 148us/step - loss: 0.0010 - acc: 1.0000 - val_loss: 0.8981 - val_acc: 0.8560\n",
      "Epoch 14/15\n",
      "25000/25000 [==============================] - 4s 149us/step - loss: 7.3074e-04 - acc: 1.0000 - val_loss: 0.9358 - val_acc: 0.8562\n",
      "Epoch 15/15\n",
      "25000/25000 [==============================] - 4s 149us/step - loss: 5.2247e-04 - acc: 1.0000 - val_loss: 0.9678 - val_acc: 0.8564\n"
     ]
    }
   ],
   "source": [
    "history = model.fit(x_train, y_train, epochs=15, batch_size=256, validation_data=(x_test, y_test))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x260b9eb45c0>"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(history.epoch, history.history.get('loss'), c='r', label='loss')\n",
    "plt.plot(history.epoch, history.history.get('val_loss'), c='b', label='val_loss')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x260bfb23278>"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(history.epoch, history.history.get('acc'), c='r', label='acc')\n",
    "plt.plot(history.epoch, history.history.get('val_acc'), c='b', label='val_acc')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "keras.datasets."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
